package com.el.singleton;

public class Singleton {

    /* 持有私有静态实例，防止被引用，此处赋值为 null，目的是实现延迟加载 */
    private static Singleton singleton=null;

    /*构造私有方法，防止被实例化
    */
    private Singleton (){

    }
    /*
    使用内部类来维护一个单例
     */
    private static class SingletonFactory {
        private static Singleton instance=new Singleton();
    }
    /*静态工程，创建方法

     */
    public static synchronized Singleton getInstance(){
        if(null==singleton){
            synchronized(singleton){
                if(null==singleton){
                    singleton=new Singleton();
                }
            }
        }
        return singleton;
    }
    /*
       如果该对象被用于序列化，可以保证对象在序列化前后保持一致
    */
    public Object readResolve(){
       return getInstance1();
    }
    /*
    获取实例
     */
    public Singleton getInstance1(){
        return SingletonFactory.instance;
    }
}
